#Motivación: El pinche ActiveRecord hace un "select * from blahblah" cada vez
#que le pides datos sobre algun evento / respuesta a una tarea. Esto significa
#que lee todo el blob, así sea de 16Megas incluso si no lo vas a usar. Hay dos
#soluciones que se me ocurren:
# *usar :select => ... en las opciones de find - se puede olvidar, si se añaden
#    nuevas columnas hay que añadirlas en todos los selects, ...
# *separar los blobs a otras tablas. Si se requiere que se precargen los blobs
#    se puede usar :include => :EventBlob o :AnswerBlob
class MoveBlobsToOtherTable < ActiveRecord::Migration
  def self.up
    create_table :event_blobs do |t|
      t.column :event_id, :integer
      t.column :file_name, :string
      t.column :data, :binary
    end
    create_table :answer_blobs do |t|
      t.column :assignment_answer_id, :integer
      t.column :file_name, :string
      t.column :data, :binary
    end

    # 1 = File, 2 = Plain text, >3 reserved...
    add_column :events, :kind, :integer 
    add_column :assignment_answers, :kind, :integer 

    remove_column :events, :description_filename
    remove_column :events, :description

    remove_column :assignment_answers, :answer
  end

  def self.down
    raise IrreversibleMigration
  end
end
